package com.wzp.server;

import java.util.Arrays;

/**
 * 数组中心索引
 *
 * @author zhengpeng.wang
 */
public class ArrayCenterIndex {

    /**
     * 数组中某一个下标，左右两边的元素之后相等，该下标即为中心索引
     * 思路：先统计出整个数组的总和，然后从第一个元素开始叠加
     * 总和递减当前元素，叠加递增当前元素，知道两个值相等
     */
    public static int pivotIndex(int[] nums) {
        int totalSum = Arrays.stream(nums).sum();
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            if (2 * sum + nums[i] == totalSum) {
                return i;
            }
            sum += nums[i];
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5, 1};
        System.out.println(pivotIndex(arr));
    }


    public static int pivotIndex1(int[] nums) {
        int total = Arrays.stream(nums).sum();
        int sum = 0;
        for (int i = 0; i < total; i++) {
            if (2 * sum + nums[i] == total) {
                return i;
            } else if (2 * sum + nums[i] > total) {
                return -1;
            }
            sum += nums[i];
        }
        return -1;
    }

}
